Source for file SC_FormParam.php

Documentation is available at SC_FormParam.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. /* パラメータ管理クラス */
  25. class SC_FormParam {
  26.  
  27.     var $param;
  28.     var $disp_name;
  29.     var $keyname;
  30.     var $length;
  31.     var $convert;
  32.     var $arrCheck;
  33.     var $default;    // 何も入力されていないときに表示する値
  34.     var $input_db;    // DBにそのまま挿入可能か否か
  35.     var $html_disp_name;
  36.  
  37.     // コンストラクタ
  38.     function SC_FormParam({
  39.         $this->check_dir IMAGE_SAVE_DIR;
  40.         $this->disp_name = array();
  41.         $this->keyname = array();
  42.         $this->length = array();
  43.         $this->convert = array();
  44.         $this->arrCheck = array();
  45.         $this->default = array();
  46.         $this->input_db = array();
  47.     }
  48.  
  49.     // パラメータの追加
  50.     function addParam($disp_name$keyname$length=""$convert=""$arrCheck=array()$default=""$input_db="true"{
  51.         $this->disp_name[$disp_name;
  52.         $this->keyname[$keyname;
  53.         $this->length[$length;
  54.         $this->convert[$convert;
  55.         $this->arrCheck[$arrCheck;
  56.         $this->default[$default;
  57.         $this->input_db[$input_db;
  58.     }
  59.  
  60.     // パラメータの入力
  61.     // $arrVal    :$arrVal['keyname']・・の配列を一致したキーのインスタンスに格納する
  62.     // $seq        :trueの場合、$arrVal[0]~の配列を登録順にインスタンスに格納する
  63.     function setParam($arrVal$seq false{
  64.         $cnt 0;
  65.         if(!$seq){
  66.             foreach($this->keyname as $val{
  67.                 if(isset($arrVal[$val])) {
  68.                     $this->setValue($val$arrVal[$val]);
  69.                 }
  70.             }
  71.         else {
  72.             foreach($this->keyname as $val{
  73.                 $this->param[$cnt$arrVal[$cnt];
  74.                 $cnt++;
  75.             }
  76.         }
  77.     }
  78.  
  79.     // 画面表示用タイトル生成
  80.     function setHtmlDispNameArray({
  81.         $cnt 0;
  82.         foreach($this->keyname as $val{
  83.             $find false;
  84.             foreach($this->arrCheck[$cntas $val{
  85.                 if($val == "EXIST_CHECK"{
  86.                     $find true;
  87.                 }
  88.             }
  89.  
  90.             if($find{
  91.                 $this->html_disp_name[$cnt$this->disp_name[$cnt"<span class='red'>(※ 必須)</span>";
  92.             else {
  93.                 $this->html_disp_name[$cnt$this->disp_name[$cnt];
  94.             }
  95.             $cnt++;
  96.         }
  97.     }
  98.  
  99.     // 画面表示用タイトル取得
  100.     function getHtmlDispNameArray({
  101.         return $this->html_disp_name;
  102.     }
  103.  
  104.     // 複数列パラメータの取得
  105.     function setParamList($arrVal$keyname{
  106.         // DBの件数を取得する。
  107.         $count count($arrVal);
  108.         $no 1;
  109.         for($cnt 0$cnt $count$cnt++{
  110.             $key $keyname.$no;
  111.             if($arrVal[$cnt][$keyname!= ""{
  112.                 $this->setValue($key$arrVal[$cnt][$keyname]);
  113.             }
  114.             $no++;
  115.         }
  116.     }
  117.  
  118.     function setDBDate($db_date$year_key 'year'$month_key 'month'$day_key 'day'{
  119.  
  120.         if (!empty($db_date)) {
  121.             list($y$m$dsplit("[- ]"$db_date);
  122.             $this->setValue($year_key$y);
  123.             $this->setValue($month_key$m);
  124.             $this->setValue($day_key$d);
  125.         }
  126.     }
  127.  
  128.     // キーに対応した値をセットする。
  129.     function setValue($key$param{
  130.         $cnt 0;
  131.         foreach($this->keyname as $val{
  132.             if($val == $key{
  133.                 $this->param[$cnt$param;
  134.                 break;
  135.             }
  136.             $cnt++;
  137.         }
  138.     }
  139.  
  140.     function toLower($key{
  141.         $cnt 0;
  142.         foreach($this->keyname as $val{
  143.             if($val == $key{
  144.                 $this->param[$cntstrtolower($this->param[$cnt]);
  145.                 break;
  146.             }
  147.             $cnt++;
  148.         }
  149.     }
  150.  
  151.     // エラーチェック
  152.     function checkError($br true$keyname ""{
  153.         // 連想配列の取得
  154.         $arrRet $this->getHashArray($keyname);
  155.         $objErr new SC_CheckError($arrRet);
  156.         $cnt 0;
  157.         foreach($this->keyname as $val{
  158.             foreach($this->arrCheck[$cntas $func{
  159.                 if (!isset($this->param[$cnt])) $this->param[$cnt"";
  160.                 switch($func{
  161.                 case 'EXIST_CHECK':
  162.                 case 'NUM_CHECK':
  163.                 case 'EMAIL_CHECK':
  164.                 case 'EMAIL_CHAR_CHECK':
  165.                 case 'ALNUM_CHECK':
  166.                 case 'GRAPH_CHECK':
  167.                 case 'KANA_CHECK':
  168.                 case 'URL_CHECK':
  169.                 case 'SPTAB_CHECK':
  170.                 case 'ZERO_CHECK':
  171.                 case 'ALPHA_CHECK':
  172.                 case 'ZERO_START':
  173.                 case 'FIND_FILE':
  174.                 case 'NO_SPTAB':
  175.                 case 'DIR_CHECK':
  176.                 case 'DOMAIN_CHECK':
  177.                 case 'FILE_NAME_CHECK':
  178.                 case 'MOBILE_EMAIL_CHECK':
  179.  
  180.                     if(!is_array($this->param[$cnt])) {
  181.                         $objErr->doFunc(array($this->disp_name[$cnt]$val)array($func));
  182.                     else {
  183.                         $max count($this->param[$cnt]);
  184.                         for($i 0$i $max$i++{
  185.                             $objSubErr new SC_CheckError($this->param[$cnt]);
  186.                             $objSubErr->doFunc(array($this->disp_name[$cnt]$i)array($func));
  187.                             if(count($objSubErr->arrErr0{
  188.                                 foreach($objSubErr->arrErr as $mess{
  189.                                     if($mess != ""{
  190.                                         $objErr->arrErr[$val$mess;
  191.                                     }
  192.                                 }
  193.                             }
  194.                         }
  195.                     }
  196.                     break;
  197.                 case 'MAX_LENGTH_CHECK':
  198.                 case 'NUM_COUNT_CHECK':
  199.                     if(!is_array($this->param[$cnt])) {
  200.                         $objErr->doFunc(array($this->disp_name[$cnt]$val$this->length[$cnt])array($func));
  201.                     else {
  202.                         $max count($this->param[$cnt]);
  203.                         for($i 0$i $max$i++{
  204.                             $objSubErr new SC_CheckError($this->param[$cnt]);
  205.                             $objSubErr->doFunc(array($this->disp_name[$cnt]$i$this->length[$cnt])array($func));
  206.                             if(count($objSubErr->arrErr0{
  207.                                 foreach($objSubErr->arrErr as $mess{
  208.                                     if($mess != ""{
  209.                                         $objErr->arrErr[$val$mess;
  210.                                     }
  211.                                 }
  212.                             }
  213.                         }
  214.                     }
  215.                     break;
  216.                 // 小文字に変換
  217.                 case 'CHANGE_LOWER':
  218.                     $this->param[$cntstrtolower($this->param[$cnt]);
  219.                     break;
  220.                 // ファイルの存在チェック
  221.                 case 'FILE_EXISTS':
  222.                     if($this->param[$cnt!= "" && !file_exists($this->check_dir $this->param[$cnt])) {
  223.                         $objErr->arrErr[$val"※ " $this->disp_name[$cnt"のファイルが存在しません。<br>";
  224.                     }
  225.                     break;
  226.                 default:
  227.                     $objErr->arrErr[$val"※※ エラーチェック形式($func)には対応していません ※※ <br>";
  228.                     break;
  229.                 }
  230.             }
  231.  
  232.             if (isset($objErr->arrErr[$val]&& !$br{
  233.                 $objErr->arrErr[$valereg_replace("<br>$"""$objErr->arrErr[$val]);
  234.             }
  235.             $cnt++;
  236.         }
  237.         return $objErr->arrErr;
  238.     }
  239.  
  240.     // 入力文字の変換
  241.     function convParam({
  242.         /*
  243.          *    文字列の変換
  244.          *    K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
  245.          *    C :  「全角ひら仮名」を「全角かた仮名」に変換
  246.          *    V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
  247.          *    n :  「全角」数字を「半角(ハンカク)」に変換
  248.          *  a :  「全角」英字を「半角」英字に変換
  249.          */
  250.         $cnt 0;
  251.         foreach ($this->keyname as $val{
  252.             if (!isset($this->param[$cnt])) $this->param[$cnt"";
  253.  
  254.             if(!is_array($this->param[$cnt])) {
  255.                 if($this->convert[$cnt!= ""{
  256.                     $this->param[$cntmb_convert_kana($this->param[$cnt,$this->convert[$cnt]);
  257.                 }
  258.             else {
  259.                 $max count($this->param[$cnt]);
  260.                 for($i 0$i $max$i++{
  261.                     if($this->convert[$cnt!= ""{
  262.                         $this->param[$cnt][$imb_convert_kana($this->param[$cnt][$i,$this->convert[$cnt]);
  263.                     }
  264.                 }
  265.             }
  266.             $cnt++;
  267.         }
  268.     }
  269.  
  270.     // 連想配列の作成
  271.     function getHashArray($keyname ""{
  272.         $arrRet array();
  273.         $cnt 0;
  274.         foreach($this->keyname as $val{
  275.             if($keyname == "" || $keyname == $val{
  276.                 $arrRet[$val= isset($this->param[$cnt]$this->param[$cnt"";
  277.                 $cnt++;
  278.             }
  279.         }
  280.         return $arrRet;
  281.     }
  282.  
  283.     // DB格納用配列の作成
  284.     function getDbArray({
  285.         $cnt 0;
  286.         foreach ($this->keyname as $val{
  287.             if ($this->input_db[$cnt]{
  288.                 $arrRet[$val= isset($this->param[$cnt]$this->param[$cnt"";
  289.             }
  290.             $cnt++;
  291.         }
  292.         return $arrRet;
  293.     }
  294.  
  295.     // 配列の縦横を入れ替えて返す
  296.     function getSwapArray($arrKey{
  297.         foreach($arrKey as $keyname{
  298.             $arrVal $this->getValue($keyname);
  299.             $max count($arrVal);
  300.             for($i 0$i $max$i++{
  301.                 $arrRet[$i][$keyname$arrVal[$i];
  302.             }
  303.         }
  304.         return $arrRet;
  305.     }
  306.  
  307.     // 項目名一覧の取得
  308.     function getTitleArray({
  309.         return $this->disp_name;
  310.     }
  311.  
  312.     // 項目数を返す
  313.     function getCount({
  314.         $count count($this->keyname);
  315.         return $count;
  316.     }
  317.  
  318.     // フォームに渡す用のパラメータを返す
  319.     function getFormParamList({
  320.         $cnt 0;
  321.         foreach($this->keyname as $val{
  322.  
  323.             // キー名
  324.             $arrRet[$val]['keyname'$this->keyname[$cnt];
  325.             // 文字数制限
  326.             $arrRet[$val]['length'$this->length[$cnt];
  327.             // 入力値
  328.             if (isset($this->param[$cnt])) {
  329.                 $arrRet[$val]['value'$this->param[$cnt];
  330.             }
  331.  
  332.             if (!isset($this->param[$cnt])) $this->param[$cnt"";
  333.  
  334.             if($this->default[$cnt!= "" && $this->param[$cnt== ""{
  335.                 $arrRet[$val]['value'$this->default[$cnt];
  336.             }
  337.  
  338.             $cnt++;
  339.         }
  340.         return $arrRet;
  341.     }
  342.  
  343.     // キー名の一覧を返す
  344.     function getKeyList({
  345.         foreach($this->keyname as $val{
  346.             $arrRet[$val;
  347.         }
  348.         return $arrRet;
  349.     }
  350.  
  351.     // キー名と一致した値を返す
  352.     function getValue($keyname{
  353.         $cnt 0;
  354.         foreach($this->keyname as $val{
  355.             if($val == $keyname{
  356.                 $ret = isset($this->param[$cnt]$this->param[$cnt"";
  357.                 break;
  358.             }
  359.             $cnt++;
  360.         }
  361.         return $ret;
  362.     }
  363.  
  364.     function splitCheckBoxes($keyname{
  365.         $cnt 0;
  366.         foreach($this->keyname as $val{
  367.             if($val == $keyname{
  368.                 $this->param[$cntsfSplitCheckBoxes($this->param[$cnt]);
  369.             }
  370.             $cnt++;
  371.         }
  372.     }
  373.  
  374.     function splitParamCheckBoxes($keyname{
  375.         $cnt 0;
  376.         foreach($this->keyname as $val{
  377.             if($val == $keyname{
  378.                 if(isset($this->param[$cnt]&& !is_array($this->param[$cnt])) {
  379.                     $this->param[$cntsplit("-"$this->param[$cnt]);
  380.                 }
  381.             }
  382.             $cnt++;
  383.         }
  384.     }
  385. }
  386. ?>

Documentation generated on Tue, 28 Apr 2009 18:13:17 +0900 by phpDocumentor 1.4.2